import { defineStore } from 'pinia'
import { ref } from 'vue'

export const useCartStore = defineStore('cart', () => {
  // 购物车商品列表
  const cartItems = ref<Array<{ id: string, name: string, quantity: number, price: number }>>([])

  // 添加商品到购物车
  const addToCart = (item: { id: string, name: string, quantity: number, price: number }) => {
    const existingItem = cartItems.value.find(cartItem => cartItem.id === item.id)
    if (existingItem) {
      existingItem.quantity += item.quantity
    } else {
      cartItems.value.push(item)
    }
    saveCart()
  }

  // 移除商品
  const removeFromCart = (id: string) => {
    cartItems.value = cartItems.value.filter(item => item.id !== id)
    saveCart()
  }

  // 更新商品数量
  const updateItemQuantity = (id: string, quantity: number) => {
    const item = cartItems.value.find(item => item.id === id)
    if (item) {
      item.quantity = quantity
      saveCart()
    }
  }

  // 获取购物车商品总数
  const cartCount = ref(0)

  // 保存购物车到 localStorage
  const saveCart = () => {
    localStorage.setItem('cartItems', JSON.stringify(cartItems.value))
    updateCartCount()
  }

  // 加载购物车
  const loadCart = () => {
    const savedCart = localStorage.getItem('cartItems')
    if (savedCart) {
      cartItems.value = JSON.parse(savedCart)
      updateCartCount()
    }
  }

  // 更新购物车商品数量
  const updateCartCount = () => {
    cartCount.value = cartItems.value.reduce((sum, item) => sum + item.quantity, 0)
  }

  // 清空购物车
  const clearCart = () => {
    cartItems.value = []
    saveCart()
  }

  // 初始化时加载购物车
  loadCart()

  return {
    cartItems,
    cartCount,
    addToCart,
    removeFromCart,
    updateItemQuantity,
    saveCart,
    loadCart,
    clearCart
  }
})
